package com.shuiyun.jtt.utils.codec;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author shuiyun
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface FieldValue {

    // 固长数据 对于类型是map的数据 该字段表示key的长度
    int length() default -1;

    // 数据长度 的占用字节数
    int lengthSize() default -1;

    // 数据类型
    DataType type() default DataType.BYTE;

    // 默认字符编码搁置
    String charset() default "GBK";

    // 默认填充值
    byte pad() default 0x00;

    // 字段描述
    String desc() default "";

    // 默认忽略值为空的数据 默认为false 就算没有数据 也要占字节位置
    boolean ignore() default false;

    // 对于list和obj的实体编码 对于map类型数据 该字段表示k/V映射参照实体
    Class clazz() default Void.class;

    /**
     * 字段检查，判断某个字段是否根据条件进行写入写出 格式 参数/运算符/被运算值 运算结果为true时跳过
     * @see com.shuiyun.jtt.utils.codec.CoderDecoderUtil#ignore
     * */
    String[] checkMethod() default {};

}


